const db = wx.cloud.database();

Page({
  /**
   * 页面的初始数据
   */
  data: {
    announcements: [
      {
        image: '',
        title: '',
        info: ''
      }
      // {
      //   id: 1,
      //   title: "公告1",
      //   content: "这是公告1的内容",
      //   date: "2024-05-17"
      // },
      // {
      //   id: 2,
      //   title: "公告2",
      //   content: "这是公告2的内容",
      //   date: "2024-05-16"
      // }
    ]
  },
  chooseImage: function() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: res => {
        const tempFilePath = res.tempFilePaths[0]
        this.setData({
          image: tempFilePath
        })
      }
    })
  },
  formSubmit: function(e) {
    const { title, info } = e.detail.value
    const { image } = this.data

    if (!title || !info || !image) {
      wx.showToast({
        title: '请填写所有字段',
        icon: 'none'
      })
      return
    }

    wx.showLoading({
      title: '发布中',
    })

    // 上传图片到云存储
    const cloudPath = `images/${Date.now()}-${Math.floor(Math.random(0, 1) * 1000)}.png`
    wx.cloud.uploadFile({
      cloudPath,
      filePath: image,
      success: res => {
        const fileID = res.fileID

        // 调用云函数提交数据
        wx.cloud.callFunction({
          name: 'submit',
          data: {
            image: fileID,
            title,
            info
          },
          success: res => {
            wx.hideLoading()
            if (res.result.success) {
              wx.showToast({
                title: '发布成功',
                icon: 'success'
              })
              // 跳转到信息公告列表页面
              wx.switchTab({
                url: '/pages/announcementList/announcementList'
              })
            } else {
              wx.showToast({
                title: '发布失败',
                icon: 'none'
              })
            }
          },
          fail: err => {
            wx.hideLoading()
            wx.showToast({
              title: '发布失败',
              icon: 'none'
            })
          }
        })
      },
      fail: err => {
        wx.hideLoading()
        wx.showToast({
          title: '图片上传失败',
          icon: 'none'
        })
      }
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getAnnouncements();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getAnnouncements();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
  
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.getAnnouncements();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 从云数据库获取公告数据
   */
  getAnnouncements() {
    db.collection('message').get({
      success: res => {
        console.log('获取公告成功', res.data);
        const announcements = res.data.map(item => {
          item.createTime = this.dateFormat(item.createTime, 'YYYY-MM-DD hh:mm:ss');
          return item;
        });
        this.setData({
          announcements: announcements // 更新页面数据
        });
      },
      fail: err => {
        console.error('获取公告失败', err);
        wx.showToast({
          title: '获取公告失败，请稍后重试',
          icon: 'none'
        });
      }
    });
  },

   /**
   * 格式化时间
   */
  dateFormat(date, fmt) {
    let ret;
    const opt = {
      "Y+": date.getFullYear().toString(),        // 年
      "M+": (date.getMonth() + 1).toString(),     // 月
      "D+": date.getDate().toString(),            // 日
      "h+": date.getHours().toString(),           // 时
      "m+": date.getMinutes().toString(),         // 分
      "s+": date.getSeconds().toString()          // 秒
      // 有其他格式化字符需求可以继续添加，必须转化成字符串
    };
    for (let k in opt) {
      ret = new RegExp("(" + k + ")").exec(fmt);
      if (ret) {
        fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")));
      }
    }
    return fmt;
  }
})